﻿using System;
namespace Producers.Arireg.Xtee.Riik.Ee.Producer.Arireg {
    
    
    public class XEsindustyyp : global::Xtee.Core.Schema.XsdString {
        
        public const string ESINDUSÕIGUSETAPANKROTIHALDUR = "PHEIE";
        
        public const string JUHATUSETEHINGUPIIRANG = "JTEHP";
        
        public const string LIKVKORRALDAVAJUTINEHALDUR = "AJPES";
        
        public const string LIKVIDEERIJATEERALDIESINDUSÕIGUSENÕUD = "ERES";
        
        public const string MÄRKUSEDPROKURISTIDEKOHTA = "MARKP";
        
        public const string PANKROTIHALDURIESINDUSÕIGUS = "PHES";
        
        public const string ÜHISEESINDUSÕIGUSENÕUDED = "YHES";
        
        public const string ÜHISPROKUURA = "YHPRO";
        
        public XEsindustyyp(string value) : 
                base(value) {
            this.Validate();
            string annot = null;
            if (Value == "PHEIE") {
                annot = "Esindusõiguseta pankrotihaldur";
            }
            if (Value == "JTEHP") {
                annot = "Juhatuse tehingupiirang";
            }
            if (Value == "AJPES") {
                annot = "Likv.korraldav ajutine haldur";
            }
            if (Value == "ERES") {
                annot = "Likvideerijate eraldi esindusõiguse nõud";
            }
            if (Value == "MARKP") {
                annot = "Märkused prokuristide kohta";
            }
            if (Value == "PHES") {
                annot = "Pankrotihalduri esindusõigus";
            }
            if (Value == "YHES") {
                annot = "Ühise esindusõiguse nõuded";
            }
            if (Value == "YHPRO") {
                annot = "Ühisprokuura";
            }
            if (annot!=null) {
                this._annotation = annot;
            }
            else {
                throw new global::Xtee.Core.Types.XteeSimpleTypeValidationException(string.Format("Enumeration on [{0}] does not allow value : [{1}] ", this.GetType().Name,Value.ToString()));;
            }
        }
        
        public XEsindustyyp() : 
                base(string.Empty) {
        }
        
        public static bool TryParse(string value, out global::Producers.Arireg.Xtee.Riik.Ee.Producer.Arireg.XEsindustyyp result) {
            try {
                result = new global::Producers.Arireg.Xtee.Riik.Ee.Producer.Arireg.XEsindustyyp(value);
                return true;
            }
            catch (System.Exception ) {
                result = null;
                return false;
            }
        }
        
        public static implicit operator String (XEsindustyyp value) {
            return value.Value;
        }
        
        public static implicit operator XEsindustyyp (string value) {
            if (value==null) {
                return null;
            }
            return new XEsindustyyp(value);
        }
    }
}
